﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using BusinessLayer.Interface;
using BusinessLayer.Facade;
using EntityLayer;

using System.Data;
using System.IO;
using DevExpress.Web.ASPxUploadControl;
//using PresentationLayer.WebForms.INICIO_DE_ACCIONES_LEGALES;
using System.Drawing;

namespace PresentationLayer
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        private String msg, titulo;
        private static String RutaExcel = "";
        private clsIFacadeActualizarPreLegajoJudicial IPrelegajoActualizar;
        private String op = "I";
       
        private T_Prelegajo objT_Prelegajo;
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (Session["op"] == null)
                    {
                        MostrarComentario("No hay Informacion Disponible", titulo);

                        Response.Redirect("wfrmPreLegajoJudicialListar.aspx", false);

                        return;
                    }
                    else
                    {
                        dtp_FechaRecepcion.Text = DateTime.Now.ToShortDateString();
                        dtp_FechaResolucion.Text = DateTime.Now.ToShortDateString();
                        CargarTipoProceso();
                        CargarUnidadOrganica();
                        CargarEntidad();
                        //CargarPersonaEnvia();
                        lbl_Estado.Value = "01";
                        op = Session["op"].ToString();
                        if (op == "I")
                        {
                            btnGrabar.Visible = true;
                            genera_nroResolucion();
                        }
                        else if (op == "M")
                        {
                            btnGrabar.Visible = true;
                            ObtenerDatos();    
                        }
                        else if (op == "C")
                        {
                            btnGrabar.Visible = false;
                            ObtenerDatos();
                            MostrarConsulta();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                titulo = "Page_Load";
                MostrarComentario(ex.Message, titulo);
            }
        }

      

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            GrabarPreLegajo();
        }

                 

        #region Metodos
        private void CargarTipoProceso()
        {
            try
            {
                IEnumerable<Object> listarTipoProceso = null;
                listarTipoProceso = new List<Object>();

                IPrelegajoActualizar = new clsFacadeActualizarPreLegajoJudicial();
                listarTipoProceso = IPrelegajoActualizar.listarTipoProceso();

                if (listarTipoProceso == null || listarTipoProceso.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }

                Cbo_TipoProceso.DataSource = listarTipoProceso;
                Cbo_TipoProceso.ValueField = "CO_tipoproceso";
                Cbo_TipoProceso.TextField = "VR_tipoproceso";
                Cbo_TipoProceso.DataBind();
                Cbo_TipoProceso.SelectedIndex = 0;

            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }

       
        }

        private void CargarEntidad()
        {
            try
            {
                IEnumerable<Object> ListarEntidad = null;
                ListarEntidad = new List<Object>();

                IPrelegajoActualizar = new clsFacadeActualizarPreLegajoJudicial();
                ListarEntidad = IPrelegajoActualizar.ListarEntidades();

                if (ListarEntidad == null || ListarEntidad.Count() == 0) { MostrarComentario("No existen datos para Entidades."); return; }

                cboEntidad.DataSource = ListarEntidad;
                cboEntidad.ValueField = "co_Entidad";
                cboEntidad.TextField = "no_Entidad";
                cboEntidad.DataBind();
                cboEntidad.SelectedIndex = 0;

            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }
        }
        private void genera_nroResolucion()
        {
            try
            {
                //List<sp_Genera_nroResolucion> listar_genera_nroResolucion = null;
                //listar_genera_nroResolucion = new List<sp_Genera_nroResolucion>();
               

                //IPrelegajoActualizar = new clsFacadeActualizarPreLegajoJudicial();
                IPrelegajoActualizar = new clsFacadeActualizarPreLegajoJudicial();
                txt_NuPrelegajo.Text =IPrelegajoActualizar.listar_genera_nroResolucion();

                //if (listar_genera_nroResolucion == null || listar_genera_nroResolucion.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }

                //foreach (var s in listar_genera_nroResolucion)
                //{
                //    txt_NuPrelegajo.Text = s.NU_resolucion;
                //}
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarTipoProceso");
            }
        }
        private void CargarUnidadOrganica()
        {
            try
            {
                IEnumerable<Object> listarUnidadOrganica = null;
                listarUnidadOrganica = new List<Object>();

                IPrelegajoActualizar = new clsFacadeActualizarPreLegajoJudicial();
                listarUnidadOrganica = IPrelegajoActualizar.listarUnidadOrganica();

                if (listarUnidadOrganica == null || listarUnidadOrganica.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }

                Cbo_UnidadOrganica.DataSource = listarUnidadOrganica;
                Cbo_UnidadOrganica.ValueField = "CO_unidadorg";
                Cbo_UnidadOrganica.TextField = "VR_nombreorg";
                Cbo_UnidadOrganica.DataBind();
                Cbo_UnidadOrganica.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarUnidadOrganica");
            }
        }
        //private void CargarPersonaEnvia()
        //{
        //    try
        //    {
        //        IEnumerable<Object> listarPersonaEnvia = null;
        //        listarPersonaEnvia = new List<Object>();

        //        IPrelegajoActualizar = new clsFacadeActualizarPreLegajoJudicial();
        //        listarPersonaEnvia = IPrelegajoActualizar.listarPersonaEnvia();

        //        if (listarPersonaEnvia == null || listarPersonaEnvia.Count() == 0) { MostrarComentario("No existen datos para Tipos de procesos."); return; }

        //        Cbo_PersonaEnvia.DataSource = listarPersonaEnvia;
        //        Cbo_PersonaEnvia.ValueField = "CO_persona";
        //        Cbo_PersonaEnvia.TextField = "VR_nombrepersona";
        //        Cbo_PersonaEnvia.DataBind();
        //        Cbo_PersonaEnvia.SelectedIndex = 0;
        //    }
        //    catch (Exception ex)
        //    {
        //        MostrarComentario(ex.Message, "CargarUnidadOrganica");
        //    }
        //}
        private void MostrarComentario(String msg, String titulo = "Mensaje", bool err=true)
        {
            if (err)
            {
                lblMensaje.Text = msg;
                pcMensaje.HeaderText = titulo;
                pcMensaje.ShowOnPageLoad = true;
            }
            else
            {
                lblMensaje0.Text = msg;
                pcMensajeRetorno .HeaderText = titulo;
                pcMensajeRetorno.ShowOnPageLoad = true;
            
            }
          
          
        }

        private void GrabarPreLegajo()
        {
            Boolean ok = true;
            msg = String.Empty;
            try
            {
                IPrelegajoActualizar = new clsFacadeActualizarPreLegajoJudicial();
                objT_Prelegajo = new T_Prelegajo();

                if (ok)
                {
                    objT_Prelegajo.NU_Prelegajo = txt_NuPrelegajo.Text;
                    objT_Prelegajo.Nu_Resolucion = txtResolucion.Text;
                    objT_Prelegajo.NU_informe = txt_NroInforme.Text;
                    objT_Prelegajo.FE_recepcion = Convert.ToDateTime(dtp_FechaRecepcion.Text);
                    objT_Prelegajo.FE_resolucion = Convert.ToDateTime(dtp_FechaResolucion.Text);
                    objT_Prelegajo.NU_memo = txt_NroMemo.Text;
                    objT_Prelegajo.CO_tipoproceso = Cbo_TipoProceso.SelectedItem.Value.ToString();
                    objT_Prelegajo.CO_unidadorg = Cbo_UnidadOrganica.SelectedItem.Value.ToString();
                    objT_Prelegajo.CO_persona = "00";
                    objT_Prelegajo.TX_personaenvia = txtPersonaEnvia.Text;
                    objT_Prelegajo.VR_detalle = txt_Sumilla.Text;
                    objT_Prelegajo.CO_estado = lbl_Estado.Value;
                    objT_Prelegajo.co_entiadad = cboEntidad.Value.ToString();
                    objT_Prelegajo.tx_OrigenInforme = txtOrigenInforme.Text;
                    objT_Prelegajo.FE_Informe =Convert.ToDateTime( dtpFechaInforme.Value.ToString());
                    op = Session["op"].ToString();

                    ok = IPrelegajoActualizar.ActualizarPreLegajo(objT_Prelegajo, op);

                    if (op == "I") { msg = (!ok) ? "Ocurrió un error al registrar el Prelegajo." : "Se registró el Prelegajo correctamente."; }
                    else if (op == "M") { msg = (!ok) ? "Ocurrió un error al actualizar el Prelegajo" : "Se actualizó el Prelegajo correctamente."; }
                }
            }
            catch (Exception ex)
            {
                ok = false;
                msg = (ex.InnerException == null) ? ex.Message : ex.InnerException.Message;
            }
            if (!ok) { MostrarComentario(msg, "GrabarPreLegajo"); } else { MostrarComentario(msg,"Prelegajo",false); }

            
            //return ok;
        }
        private void ObtenerDatos()
        {
            Boolean ok = true;
            msg = String.Empty;
            try
            {
                if (Session["nroResol"] == null) { ok = false; msg = "No existe el código del Legajo"; }
                if (ok)
                {
                    txt_NuPrelegajo.ReadOnly = true;

                    String nroResol = Session["nroResol"].ToString();
                    IPrelegajoActualizar = new clsFacadeActualizarPreLegajoJudicial();

                    List<T_Prelegajo> listarLegajoNU_Resol = null;
                    listarLegajoNU_Resol = new List<T_Prelegajo>();

                    listarLegajoNU_Resol = IPrelegajoActualizar.listarLegajoNU_Resol(nroResol);

                    if (listarLegajoNU_Resol == null || listarLegajoNU_Resol.Count() == 0)
                    {
                        ok = false;
                        msg = "No existen datos para el legajo seleccionado";
                    }

                    if (ok)
                    {
                        txt_NuPrelegajo.Text = listarLegajoNU_Resol[0].NU_Prelegajo;
                        txtOrigenInforme.Text = listarLegajoNU_Resol[0].tx_OrigenInforme;
                        dtpFechaInforme.Value = listarLegajoNU_Resol[0].FE_Informe;
                        txt_NroInforme.Text = listarLegajoNU_Resol[0].NU_informe;
                        dtp_FechaRecepcion.Value = listarLegajoNU_Resol[0].FE_recepcion;
                        dtp_FechaResolucion.Value = listarLegajoNU_Resol[0].FE_resolucion;
                        txt_NroMemo.Text = listarLegajoNU_Resol[0].NU_memo;
                        Cbo_TipoProceso.Value = listarLegajoNU_Resol[0].CO_tipoproceso;
                        Cbo_UnidadOrganica.Value = listarLegajoNU_Resol[0].CO_unidadorg;
                        txtPersonaEnvia.Text = listarLegajoNU_Resol[0].TX_personaenvia;
                        txt_Sumilla.Text = listarLegajoNU_Resol[0].VR_detalle;
                        lbl_Estado.Value = listarLegajoNU_Resol[0].CO_estado;
                        cboEntidad.Value = listarLegajoNU_Resol[0].co_entiadad;
                        txtResolucion.Text = listarLegajoNU_Resol[0].Nu_Resolucion;
                    }
                }
            }
            catch (Exception ex)
            {
                ok = false;
                titulo = "ObtenerDatos";
                MostrarComentario(ex.Message, titulo);
            }
            if (!ok)
            {
                Session["ingresar"] = ok;
                Session["msg"] = msg;
            }
            
            
        }
        #endregion



        private void MostrarConsulta()
        {
            try
            {

                txt_NuPrelegajo.Enabled = false;
                txtOrigenInforme.Enabled = false;
                txtResolucion.Enabled = false;
                txt_NroInforme.Enabled = false;
                dtp_FechaRecepcion.Enabled = false;
                dtp_FechaResolucion.Enabled = false;
                txt_NroMemo.Enabled = false;
                Cbo_TipoProceso.Enabled = false;
                Cbo_UnidadOrganica.Enabled = false;
                cboEntidad.Enabled = false;
                //  objT_Prelegajo.CO_persona = "00";
                txtPersonaEnvia.Enabled = false;
                txt_Sumilla.Enabled = false;
               // lbl_Estado.e = false;
            }
            catch (Exception)
            {

                throw;
            }

        }

        protected void btnDetalle_Click(object sender, EventArgs e)
        {
            pcAgregarDetallePrelegajo.ShowOnPageLoad = true;
        }

        protected void btnAsigAbogAsignar_Click(object sender, EventArgs e)
        {
            lblmsj.Text = "";
            if (RutaExcel.Length == 0)
            {
                lblmsj.Text = "Seleccione un archivo pdf";
                pcAgregarDetallePrelegajo.ShowOnPageLoad = true;
                return;
            }
            else
            {
                int count = grv_DetallePrelegajo.Rows.Count;

                DetalleInformes ObjDetalle = new DetalleInformes();
                ObjDetalle.item = count + 1;
                ObjDetalle.fecha = date_fechaRecep.Date;
                ObjDetalle.nombrearchivo = txt_Nombrearchivo.Text;
                ObjDetalle.rutaarchivo = Upload_cargar_archivo.FileName; //Session["Nombrearchivo"].ToString();

                List<DetalleInformes> miLista = null;
                if (Session["MidetallePrelegajo"] == null)
                {
                    miLista = new List<DetalleInformes>();
                    miLista.Add(ObjDetalle);
                }
                else
                {
                    miLista = (List<DetalleInformes>)Session["MidetallePrelegajo"];
                    miLista.Add(ObjDetalle);
                }

                Session["MidetallePrelegajo"] = miLista;
                grv_DetallePrelegajo.DataSource = miLista;
                grv_DetallePrelegajo.DataBind();
            }
            RutaExcel="";

        }
               
        public struct DetalleInformes
        {
            public int item { get; set; }
            public DateTime fecha { get; set; }
            public string nombrearchivo { get; set; }
            public string rutaarchivo { get; set; }
        }

        protected void grv_DetallePrelegajo_SelectedIndexChanged(object sender, EventArgs e)
        {
            string Nombrearchivo = grv_DetallePrelegajo.SelectedRow.Cells[3].Text;
            
            Response.Clear();
            Response.ContentType = "application/pdf";
            //' la variable nombre es el nombre del archivo .pdf
            Response.AddHeader("Content-disposition", "attachment; filename=" + Nombrearchivo);
            //' aqui va la ruta del archivo
            Response.WriteFile("~/ArchivosPrelejago/" + Nombrearchivo);
            Response.Flush();
            Response.Close();
        }

        protected void Upload_cargar_archivo_FileUploadComplete(object sender, FileUploadCompleteEventArgs e)
        {
            if (e.IsValid)
            {
                string filePath = Server.MapPath("~/ArchivosPrelejago/" + e.UploadedFile.FileName);
                e.UploadedFile.SaveAs(filePath);

                //string nombre = String.Format("{0}_{1:yyyyMMdd_hhmm}.{2}", Path.GetFileNameWithoutExtension(FileUpload.FileName), DateTime.Now, Path.GetExtension(FileUpload.FileName));

                //string ruta = Server.MapPath("nombrecarpetasitio");

                //string rutacompleta = Path.Combine(ruta, nombre);

                //e.UploadedFile.SaveAs(rutacompleta);


                RutaExcel = filePath;
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            if (Session["op"] == "C")
            {
                Response.Redirect("wfrmAsignarAbogadoAccionJudicial.aspx", true);
            }
            else
            {
                Response.Redirect("wfrmPreLegajoJudicialListar.aspx", true);
            }
        }
      
        protected void btnAceptar_Click(object sender, EventArgs e)
        {
           
        }

      

        protected void btnAceptar0_Click1(object sender, EventArgs e)
        {
            //mensaje con retor a listar
            Response.Redirect("wfrmPreLegajoJudicialListar.aspx", true);
        }

        


    }  
}   